﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using STT.Business;
using STT.Entities;
using System.Data;
using System.Text;
using System.Data.OleDb;
using System.Data.SqlClient;
using System.IO;

namespace STT.Admin.UserControls
{
    public partial class ucXaPhuong : System.Web.UI.UserControl
    {
        public bool chonSuaClick;
        bool KiemTraHuyen;
        int MaHuyen;
        bool KiemTraRong;
        bool KiemTraTonTai;
        List<string> error;
        string count;

        protected void Page_Load(object sender, EventArgs e)
        {
            LoadXa_Phuong();
             
            chonSuaClick = false;
            Methods.HuyenQuan(ref ddlHuyenQuan);
        }
        void LoadXa_Phuong()
        {

            gvXa_Phuong.AutoGenerateColumns = false;
            gvXa_Phuong.DataSource = BTbXa_Phuong.SelectAll1();
            gvXa_Phuong.DataBind();
        }
        bool KiemTraDuLieu_Sua()
        {
            return BTbXa_Phuong.KiemTraDuLieu_Sua(new ETbXa_Phuong
            {
                TenXa_Phuong = txtTenXa_Phuong.Text,
                MaXa_Phuong = Int32.Parse(hfMaXa_Phuong.Value)
            });
        }
        bool KiemTraDuLieu()
        {
            return BTbXa_Phuong.KiemTraDuLieu(new ETbXa_Phuong
            {
                TenXa_Phuong = txtTenXa_Phuong.Text
              
            });
        }
        bool KiemTraImport(string TenXa_Phuong)
        {
            return BTbXa_Phuong.KiemTraDuLieu(new ETbXa_Phuong
            {
                TenXa_Phuong = TenXa_Phuong
           
            });
        }

        void ThongBao(string Loi)
        {
            ScriptManager.RegisterClientScriptBlock(this, GetType(), "Thông báo!", "<script>alert('" + Loi + "')</script>", false);
        }
        protected void gvXa_Phuong_RowCommand(object sender, GridViewCommandEventArgs e)
        {
            if (e.CommandName == "ChonSua")
            {
                // Lay id
                int index = Convert.ToInt32(e.CommandArgument);
                hfMaXa_Phuong.Value = gvXa_Phuong.DataKeys[index].Value.ToString();
                // Thay đổi tiêu đề
               
                txtTenXa_Phuong.Text = HttpUtility.HtmlDecode(gvXa_Phuong.Rows[index].Cells[1].Text);
                ddlHuyenQuan.Text = HttpUtility.HtmlDecode(gvXa_Phuong.Rows[index].Cells[2].Text);
                Label tt = ((Label)gvXa_Phuong.Rows[index].Cells[3].FindControl("lblTrangThai"));
                if (tt.Text == "Sử dụng")
                {
                    ddTrangThai.SelectedValue = "1";
                }
                else
                { ddTrangThai.SelectedValue = "0"; }
                                  
                chonSuaClick = true;
            }
        }

        protected void btThemMoi_Click(object sender, EventArgs e)
        {
            if (!KiemTraDuLieu())
            {
                BTbXa_Phuong.Insert(new ETbXa_Phuong
                {
                    TenXa_Phuong = txtTenXa_Phuong.Text,
                    MaHuyen_Quan =Int32.Parse(ddlHuyenQuan.SelectedValue),
                    TrangThai = Int32.Parse(ddTrangThai.SelectedValue)
                });
                LoadXa_Phuong();
                Session["action"] = 1;
            }
            else
            {
                ThongBao("Huyện quận này đã tồn tại!");
            }
        }

        protected void btSearch_Click(object sender, ImageClickEventArgs e)
        {
            DataTable dt = new DataTable();
            dt = BTbXa_Phuong.SearchXa_Phuong(new ETbXa_Phuong
            {
                TenXa_Phuong = txtTimKiem.Text
            });
            gvXa_Phuong.DataSource = dt;
            gvXa_Phuong.DataBind();
        }

        protected void btThemExcel_Click(object sender, EventArgs e)
        {
            if (FileUpload.HasFile)
            {
                error = new List<string>();
                string filename = FileUpload.FileName;
                string[] str = FileUpload.FileName.Split('.');
                string ten = str[0];
                string duoi = str[1];
                if (duoi == "xls" || duoi == "xlsx")
                {
                    string path = string.Concat(Server.MapPath("~/uploads/files/" + DateTime.Now.ToString("yyyymmddhhmmssfff") + ten + "." + duoi));
                    FileUpload.PostedFile.SaveAs(path);
                    OleDbConnection oledbcon = new OleDbConnection("provider=microsoft.ace.oledb.12.0;data source=" + path + ";extended properties=excel 12.0;");
                    OleDbCommand command = new OleDbCommand("select * from [sheet1$]", oledbcon);
                    OleDbDataAdapter objadapter1 = new OleDbDataAdapter(command);
                    oledbcon.Open();
                    DataTable dt = new DataTable();
                    DataTable hq = BTbHuyen_Quan.SelectAll();
                    DataTable xa = BTbXa_Phuong.SelectAll1();
                    objadapter1.Fill(dt);
                    if (dt.Rows.Count > 0)
                    {
                        for (int i = 0; i < dt.Rows.Count; i++)
                        {
                            KiemTraRong = true;
                            KiemTraTonTai = true;
                            KiemTraHuyen = true;
                            if (dt.Rows[i][1].ToString() == "" || dt.Rows[i][2].ToString() == "")
                            {
                                KiemTraRong = false;
                                error.Add("Lỗi bỏ trống trường Xã/Phường thứ " + dt.Rows[i][0].ToString() + "!");
                                continue;
                            }
                            #region// Kiểm tra Huyện/Quận
                            for (int j = 0; j < xa.Rows.Count; j++)
                            {
                                if (dt.Rows[i][2].ToString().ToLower().Trim() == xa.Rows[j][1].ToString().ToLower().Trim())
                                {
                                    KiemTraHuyen = true;
                                    MaHuyen = Int32.Parse(xa.Rows[j][0].ToString().Trim());
                                    break;
                                }
                                else
                                {
                                    KiemTraHuyen = false;
                                }
                            }
                            #endregion
                            if (!KiemTraHuyen)
                            {
                                error.Add("Huyện/Quận: " + dt.Rows[i][1].ToString() + " không tồn tại!");
                            }
                            for (int j = 0; j < hq.Rows.Count; j++)
                            {
                                KiemTraTonTai = true;
                                if (dt.Rows[i][1].ToString().ToLower().Trim() == hq.Rows[j][1].ToString().ToLower().Trim() &&
                                    dt.Rows[i][2].ToString().ToLower().Trim() == hq.Rows[j][2].ToString().ToLower().Trim())
                                {
                                    KiemTraTonTai = false;
                                    error.Add("Xã/Phường " + dt.Rows[i][1].ToString() + " thuộc Huyện/Quận " + dt.Rows[i][2].ToString() + "  đã tồn tại!");
                                    break;
                                }

                            }
                            if (KiemTraRong && KiemTraTonTai && KiemTraHuyen)
                            {
                                try
                                {
                                    BTbXa_Phuong.Insert(new ETbXa_Phuong
                                    {
                                        MaXa_Phuong = Int32.Parse(dt.Rows[i][0].ToString()),
                                        TenXa_Phuong = dt.Rows[i][1].ToString(),
                                        MaHuyen_Quan = MaHuyen,
                                        TrangThai = 1
                                    });
                                }
                                catch (Exception ex)
                                {
                                    Response.Write("");
                                }
                            }
                        }
                        for (int i = 0; i < error.Count; i++)
                        {
                            count += " + " + error[i].ToString() + "<br/>";
                        }
                        if (error.Count > 0)
                        {
                            plError.Visible = true;
                            lbError.Text = "Bạn kiểm tra lại thông tin Xã/Phường:" + "<br/>" + count;
                        }
                    }
                    oledbcon.Close();
                }
                else
                {
                    ThongBao("Tệp tin không đúng định dạng Excel!");
                }
            }
            else
            {
                ThongBao("Bạn chưa tải tệp tin!");
            }
            LoadXa_Phuong();
            Session["action"] = 1;
        }


        protected void btSua_Click(object sender, EventArgs e)
        {
            if (!KiemTraDuLieu_Sua())
            {
                BTbXa_Phuong.Update(new ETbXa_Phuong
                {
                    MaXa_Phuong = Int32.Parse(hfMaXa_Phuong.Value),
                    TenXa_Phuong = txtTenXa_Phuong.Text,
                    MaHuyen_Quan = int.Parse(ddlHuyenQuan.SelectedValue),
                    TrangThai = Int32.Parse(ddTrangThai.SelectedValue)
                });
                LoadXa_Phuong();
                Session["action"] = 2;
            }
            else
            {
                ThongBao("Vui lòng kiểm tra lại dữ liệu , dữ liệu đã tồn tại !");
            }
      
        }

        protected void lbXoaTat_Click(object sender, EventArgs e)
        {
            try
            {
                for (int i = 0; i < gvXa_Phuong.Rows.Count; i++)
                {
                    CheckBox cbChon = (CheckBox)gvXa_Phuong.Rows[i].Cells[0].FindControl("cbChon");
                    if (cbChon != null && cbChon.Checked)
                    {
                        BTbXa_Phuong.Delete(int.Parse(gvXa_Phuong.DataKeys[i].Value.ToString()));
                    }
                }

                LoadXa_Phuong();
                Session["action"] = 3;
            }
            catch
            {
                ThongBao("Dữ liệu của một số xã phường vẫn tồn tại, vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void gvXa_Phuong_RowDeleting(object sender, GridViewDeleteEventArgs e)
        {
            try
            {
                int MaXa_Phuong = int.Parse(gvXa_Phuong.DataKeys[e.RowIndex].Value.ToString());

                BTbXa_Phuong.Delete(MaXa_Phuong);
                LoadXa_Phuong();
                Session["action"] = 3;
            }
            catch
            {
                ThongBao("Dữ liệu liên quan đến xã phường này vẫn tồn tại, vui lòng kiểm tra lại dữ liệu!");
            }
        }

        protected void gvXa_Phuong_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            gvXa_Phuong.PageIndex = e.NewPageIndex;
            gvXa_Phuong.DataBind();
        }
    }
}